package com.cloud.tsp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.api.constants.StrVo;
import com.cloud.api.domain.report.VehicleOffline;
import com.cloud.api.domain.stats.OfflineVehicleVo;
import com.cloud.api.domain.stats.VehicleStats;
import com.cloud.api.domain.sys.DictTypeQuery;
import com.cloud.api.domain.tsp.*;
import com.cloud.mybatis.domain.PageModelNew;
import com.cloud.mybatis.domain.TableDataInfo;
import com.cloud.api.domain.algorithm.VehiclePoint;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * OLAP 服务类
 * </p>
 *
 * @author haohaibo
 * @since 2023-12-01
 */
public interface IVehicleMessageDailyService extends IService<VehicleMessageDaily> {

    VehicleLocation selectVehicleLocation(String vin);

    TableDataInfo<VinLockStatus> selectVinList(QueryVehicle para);

    TableDataInfo<VinLockStatus> selectVinListTsp(QueryVehicle para);

    VehicleStats selectOnlineVehicleCount();

    TableDataInfo<OfflineVehicleVo> selectOfflineVehicle(DictTypeQuery para);

    void exportOfflineVehicle(DictTypeQuery para, HttpServletResponse response)throws IOException;

    List<VehicleMap> getAllVehicleLocation(QueryVehicleMap para);
    TableDataInfo<VehicleMap> getAllVehicleLocationPage(PageModelNew pageModel);

    List<VehicleStats> getOnlineVehicleTypeCount();

    List<VehicleSale>getOnlineVehicleModelCount();

    Integer selectOnlineCountTotal();

    Integer getOnlineToday();

    void exportOfflineList(HttpServletResponse response);

    TableDataInfo<VehicleOffline> selectOfflineList(PageModelNew para);


    TableDataInfo<VehiclePoint> getAggVehicleMessage(PageModelNew para);

    void exportAggVehicleMessage(HttpServletResponse response);

    void exportMailOfflineList();

    void exportMailAggVehicleMessage();

    VehicleCustomStatus getCustomStatus(StrVo para);
    Boolean isOnline(QueryVehicleMap para);
}